<?xml version="1.0" encoding="UTF-8"?>
<doc>
<title>tTJS</title>

<para>
<ptitle>tTJS とは</ptitle>
　TJS2 スクリプトエンジンのクラスです。このクラスのオブジェクトを通して TJS2 を操作することができます。<r/>
</para>

<para>
<ptitle>コンストラクタ</ptitle>
　tTJS のコンストラクタに引数はありません。<r/>
　tTJS のオブジェクトは自動変数として作成できません。かならず new 演算子を用いて作成する必要があります。<r/>
　作成直後の 参照カウンタは 1 になっています。これはそのまま Release メソッドを呼べば tTJS のオブジェクトが解放されると言うことです。<r/>
</para>

<para>
<ptitle>デストラクタ</ptitle>
　tTJS のデストラクタは保護部にあり、アクセスできません。<r/>
　tTJS のオブジェクトを解放するには Release メソッドを使ってください。<r/>
　また、tTJS のオブジェクトを解放する前には Shutdown メソッドを呼ぶことが推奨されます。<r/>
</para>


<para>
<ptitle>AddRef</ptitle>
void tTJS::AddRef()<r/>
<r/>
　TJS2 スクリプトエンジンの参照カウンタをインクリメントします。
</para>

<para>
<ptitle>Release</ptitle>
void tTJS::Release()<r/>
<r/>
　TJS2 スクリプトエンジンの参照カウンタをデクリメントします。<r/>
　参照カウンタが 0 になれば tTJS オブジェクトは解放されます。
</para>

<para>
<ptitle>Shutdown</ptitle>
void tTJS::Shutdown()<r/>
<r/>
　スクリプトエンジンのシャットダウンを行います。<r/>
<r/>
　TJS2 スクリプトエンジンを解放するとき、Release メソッドの前にこのメソッドを呼ぶことを推奨します。<r/>
</para>


<para>
<ptitle>GetGlobal</ptitle>
iTJSDispatch2 * tTJS::GetGlobal()<r/>
<r/>
　<kw>global オブジェクト</kw>を取得します。<link href="interface"/> 型のオブジェクトが返されます。<r/>
　このメソッドは global オブジェクトを返すとき、その参照カウンタをインクリメントします。<r/>
</para>




<para>
<ptitle>GetGlobalNoAddRef</ptitle>
iTJSDispatch2 * tTJS::GetGlobalNoAddRef()<r/>
<r/>
　global オブジェクトを取得します。GetGlobal と違うのは、global オブジェクトの参照カウンタをインクリメントしないと言うことです。<r/>
</para>




<para>
<ptitle>SetConsoleOutput</ptitle>
void tTJS::SetConsoleOutput(iTJSConsoleOutput *console);<r/>
<r/>
　<kw>コンソール</kw>の出力先を指定します。<r/>
　コンソールは、TJS2 の出すエラーメッセージなどが出力されるところです。<r/>
<r/>
以下の引数があります。<r/>
<r/>
<dl>

<dt>console</dt>
<dd>
　コンソールの出力先を定義する、<kw>iTJSConsoleOutput</kw> 型のオブジェクトを指定します。<r/>
　iTJSConsoleOutput 型は tjs.h に定義されている基本抽象クラスで、以下のメソッドがあります。<r/>
<r/>
<dl>
<dt>void iTJSConsoleOutput::<kw>ExceptionPrint</kw>(const tjs_char *msg)</dt>
<dd>
　例外に関する情報を出力するためのメソッドです。msg がメッセージを表します。
</dd>

<dt>void iTJSConsoleOutput::<kw>Print</kw>(const tjs_char *msg)</dt>
<dd>
　その他の情報を出力するためのメソッドです。msg がメッセージを表します。
</dd>
</dl>
</dd>
</dl>


</para>


<para>
<ptitle>GetConsoleOutput</ptitle>
tTJSConsoleOutput * tTJS::GetConsoleOutput() const<r/>
<r/>
　コンソールの出力先を取得します。<r/>
</para>


<para>
<ptitle>OutputToConsole</ptitle>
void tTJS::OutputToConsole(const tjs_char *msg) const<r/>
<r/>
　コンソールに文字列を出力します。msg は出力するメッセージです。<r/>
</para>



<para>
<ptitle>OutpuExceptionToConsole</ptitle>
void tTJS::OutpuExceptionToConsole(const tjs_char *msg) const<r/>
<r/>
　コンソールに例外の文字列を出力します。msg は出力するメッセージです。<r/>
</para>




<para>
<ptitle>OutputToConsoleWithCentering</ptitle>
void tTJS::OutputToConsoleWithCentering(const tjs_char *msg, tjs_uint width) const<r/>
<r/>
　コンソールに文字列をセンタリングして出力します。msg は出力するメッセージで、width は横幅です。<r/>
　横幅よりも出力するメッセージの文字数が少ない場合は、指定した横幅の中央にセンタリングして出力します
 ( ただしすべての文字の幅を同一であると見なすため、全角が混じると崩れた表示になります )
</para>






<para>
<ptitle>OutputToConsoleWithCentering</ptitle>
void tTJS::OutputToConsoleWithCentering(const tjs_char *text, tjs_uint count) const<r/>
<r/>
　text で示された区切り記号を、count 個、コンソールに出力します。
</para>





<para>
<ptitle>Dump</ptitle>
void tTJS::Dump(tjs_uint width = 80) const<r/>
<r/>
　TJS2 の状態をコンソールに出力します。<r/>
　各スクリプトブロック中の仮想マシンコードの逆アセンブル結果などが表示されます。<r/>
　width には出力する横幅を指定します。
</para>



<para>
<ptitle>ExecScript</ptitle>
void tTJS::ExecScript(<r/>
	const tjs_char *script,<r/>
	tTJSVariant *result = NULL,<r/>
	iTJSDispatch2 *context = NULL,<r/>
	const tjs_char *name = NULL,<r/>
	tjs_int lineofs = 0<r/>
	)<r/>
<r/>
void tTJS::ExecScript(<r/>
	const ttstr &amp;script,<r/>
	tTJSVariant *result = NULL,<r/>
	iTJSDispatch2 *context = NULL,<r/>
	const tjs_char *name = NULL,<r/>
	tjs_int lineofs = 0<r/>
	)<r/>
<r/>
　スクリプトを実行します。<r/>
<r/>
　以下の引数があります。<r/>
<r/>
<dl>

<dt>const tjs_char *script</dt>
<dt>const ttstr &amp;script</dt>
<dd>
　実行するスクリプトを指定します。
</dd>



<dt>tTJSVariant *result</dt>
<dd>
　結果を受け取るための tTJSVariant 型の変数へのポインタを指定します。<r/>
　NULL も指定できますが、NULL の場合は結果を受け取ることができません。
</dd>

<dt>iTJSDispatch2 *context</dt>
<dd>
　このスクリプトが実行されるコンテキストを指定します。<r/>
　NULL を指定すると、スクリプトは global コンテキスト上で実行されます。<r/>
　通常は NULL を指定しますが、スクリプトを特定のコンテキストで実行したい場合はそのコンテキストとなるオブジェクトを指定してください。</dd>



<dt>const tjs_char *name</dt>
<dd>
　スクリプトの名前を指定します。通常、そのスクリプトのファイル名を指定します。<r/>
　例外の通知の際にどこのスクリプトで例外が起こったかを知らせたりする目的で使用されます。
</dd>


<dt>tjs_int lineofs</dt>
<dd>
　スクリプト中の、そのスクリプトの始まった行(0～)を指定します。<r/>
　KAGシナリオ中に埋め込まれたTJSスクリプトのように、他のドキュメント中にTJSスクリプトが埋め込まれる場合に、そのTJSスクリプトの開始行を指定します。<r/>
　例外の通知の際にどこのスクリプトで例外が起こったかを知らせたりする目的で使用されます。
</dd>




</dl>

</para>


<para>
<ptitle>EvalExpression</ptitle>
void tTJS::EvalExpression(<r/>
	const tjs_char *expression,<r/>
	tTJSVariant *result = NULL,<r/>
	iTJSDispatch2 *context = NULL,<r/>
	const tjs_char *name = NULL<r/>
	tjs_int lineofs = 0<r/>
	)<r/>
<r/>
void tTJS::EvalExpression(<r/>
	const ttstr &amp;expression,<r/>
	tTJSVariant *result = NULL,<r/>
	iTJSDispatch2 *context = NULL,<r/>
	const tjs_char *name = NULL<r/>
	tjs_int lineofs = 0<r/>
	)<r/>
<r/>
　式を評価します。<r/>
　引数については ExecScript を参照してください。<r/>
<r/>
　<kw>if 演算子</kw>のように式の結果を得ることができない演算子の場合、その結果を得ようとして result に非 NULL を指定すると例外が発生します。この場合は result には NULL を指定する必要があります。
</para>





<para>
<ptitle>SetPPValue</ptitle>
void tTJS::SetPPValue(const tjs_char *name, const tjs_int32 value)<r/>
<r/>
　<kw>条件コンパイル</kw>用の変数を設定します。name は変数の名前、value は設定する値です。<r/>
</para>




<para>
<ptitle>GetPPValue</ptitle>
tjs_int32 tTJS::GetPPValue(const tjs_char *name)<r/>
<r/>
　条件コンパイル用の変数を取得します。name は変数の名前です。変数が見つからなかった場合は 0 が帰ります。<r/>
</para>





<para>
<ptitle>DoGarbageCollection</ptitle>
tjs_int32 tTJS::DoGarbageCollection()<r/>
<r/>
　<kw>ガベージコレクション</kw>を行います。TJS2 が保持しているキャッシュをクリアしたり、未処理のクリーンアップ処理を完了させます。<r/>
</para>

</doc>
